.TH 9P 1
.SH NAME
9p \- read and write files on a 9P server
.SH SYNOPSIS
.B 9p
[
.I options
]
.B read
.I path
.br
.B 9p
[
.I options
]
.B readfd
.I path
.PP
.B 9p
[
.I options
]
.B write
[
.B -l
]
.I path
.br
.B 9p
[
.I options
]
.B writefd
.I path
.PP
.B 9p
[
.I options
]
.B stat
.I path
.PP
.B 9p
[
.I options
]
.B rdwr
.I path
.PP
.B 9p
[
.I options
]
.B ls
[
.B -dl
]
.I path...
.SH DESCRIPTION
.I 9p
is a trivial 9P client that can access a single file on a 9P server.
It can be useful for manual interaction with a 9P server or for
accessing simple 9P services from within shell scripts.
The common options are:
.TP
.B -a\fI addr
dial
the server at
.I addr
.TP
.B -A\fI aname
attach to the file system named
.I aname
.TP
.B -n
mount without authentication
.PP
The first argument is a command, one of:
.TP
.B read
print the contents of
.I path 
to standard output
.TP
.B write
write data on standard input to
.IR path ;
the 
.B -l
option causes
.I write
to write one line at a time
.TP
.BR readfd ", " writefd
like
.B read
and 
.B write
but use
.IR openfd (9p)
instead of
.IR open ;
this masks errors and is mainly useful for debugging
the implementation of
.I openfd
.TP
.B stat
execute
.I stat (9p)
on 
.I path
and print the result
.TP
.B rdwr
Open
.I path
for reading and writing.
Then repeat until end-of-file on standard input:
copy a line from the file to standard output,
copy a line from standard input to the file.
Print errors, but don't give up.
.B Rdwr
is useful for interacting with servers like
.IR factotum (4).
.TP
.B ls
Print a directory listing in the format of
.IR ls (1).
The
.B -d
and
.B -l
flags have the same meaning as in
.IR ls .
.PD
.PP
.I 9p
dials
.I address
to connect to the 9P server.
If the
.B -a
option is not given,
.I 9p
requires the
.I path
to be of the form
.IB service / subpath \fR;
it connects to the Unix domain socket
.I service
in the name space directory
(see
.IR intro (4))
and then accesses
.IR subpath .
.SH EXAMPLE
To update
.IR plumber (4)'s
copy of your plumbing rules after editing
.BR $HOME/lib/plumbing :
.IP
.EX
cat $HOME/lib/plumbing | 9p write plumb/rules
.EE
.PP
To display the contents of the current
.IR acme (4)
window:
.IP
.EX
9p read acme/$winid/body
.EE
.SH SOURCE
.B \*9/src/cmd/9p.c
.SH SEE ALSO
.IR intro (4),
.IR intro (9p),
.IR 9pclient (3)
